#include<bits/stdc++.h>
using namespace std;
const int Maxn = 2000;
int n,nu[Maxn],nk;
string comp,a,b,c,d,e,str;
string uter[Maxn];
char qdfa,qdfb,qdfc,qdfd;
int qdf_pandua(char qdf) {
	if(qdf=='.') return 0;
	else return 1;
}
int qdf_lasts(char qdf) {
	if(qdf==':') return 0;
	else return 1;
}
int zfc_fives(string numbers) {
	int len=numbers.size(),flag=1;
	for(int i=0; i<len; i++) {
		if(numbers[i]>='0'&&'9'>=numbers[i]) flag=0;
		else return 1;
	}
	if(len>5) return 1;
	if(numbers[0]=='0') return 1;
	return flag;
}
int zhuangh(string numbers) {
	int len=numbers.size(),answer=0,sum=1;
	for(int i=len-1; i>=0; i--) {
		answer=answer+(int(numbers[i])-'0')*sum;
		sum*=10;
	}
	return answer;
}
int main() {
	freopen("network.in","r",stdin);
	freopen("network.out","w",stdout);
	cin>>n;
	for(int i=1; i<=n; i++) {
		int pd=0;
		a="00";
		b="00";
		c="00";
		d="00";
		e="00";
		qdfa='?';
		qdfb='?';
		qdfc='?';
		qdfd='?';
		cin>>comp>>str;
		int leng=str.size(),sum=0;
		string yy="";
		for(int j=0; j<leng; j++) {
			if(str[j]=='.'||str[j]==':') {
				sum++;
				if(sum==1) qdfa=str[j],a=yy;
				if(sum==2) qdfb=str[j],b=yy;
				if(sum==3) qdfc=str[j],c=yy;
				if(sum==4) qdfd=str[j],d=yy;
				yy="";
			} else yy+=str[j];
		}
		e=yy;
		pd+=zfc_fives(a);
		pd+=zfc_fives(b);
		pd+=zfc_fives(c);
		pd+=zfc_fives(d);
		pd+=zfc_fives(e);
		pd+=qdf_pandua(qdfa);
		pd+=qdf_pandua(qdfb);
		pd+=qdf_pandua(qdfc);
		pd+=qdf_lasts(qdfd);
		if(pd==0) {
			int aa=zhuangh(a),bb=zhuangh(b),cc=zhuangh(c),dd=zhuangh(d),ee=zhuangh(e);
			if(aa>=0&&aa<=225&&bb>=0&&bb<=225&&cc>=0&&cc<=225&&dd>=0&&dd<=225&&ee>=0&&ee<=65535) {
				if(comp=="Server") {
					bool flags=true;
					for(int j=1; j<=nk; j++)
						if(uter[j]==str) {
							flags=false;
							break;
						}
					if(flags==true) {
						nk++;
						uter[nk]=str;
						nu[nk]=i;
						cout<<"OK";
					} else {
						cout<<"FAIL";
					}
				} else {
					bool flags=false;
					for(int j=1; j<=nk; j++)
						if(uter[j]==str) {
							cout<<nu[j];
							flags=true;
							break;
						}
					if(flags==false) {
						cout<<"FAIL";
					}
				}
			} else cout<<"ERR";
		} else cout<<"ERR";
		cout<<endl;
	}
	return 0;
}
